﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.ComponentModel;

namespace MassIntellect.WorkIt
{
    /// <summary>
    /// Выборка элементов по заданному уровню вложенности
    /// </summary>
    [Description("Выборка элементов по заданному уровню вложенности")]
    public class LevelSelector : IXmlSelector
    {
        /// <summary>
        /// Уровень вложеннсоти
        /// </summary>
        [Serialize(SerializeAs.Attribute, IgnoreDefault = true)]
        public int IncLevel { get; set; }

        #region IXmlSelector Members

        public IWorkFrame Owner { get; set; }

        public IEnumerable<XElement> Select(XElement xe)
        {
            return GetElementsInLevel(xe, IncLevel);
        }

        private IEnumerable<XElement> GetElementsInLevel(XElement xe, int level)
        {
            IEnumerable<XElement> xx = new XElement[] { xe };
            for (int i = 1; i <= level; i++)            
                xx = xx.Elements();            
            return xx;
        }

        #endregion
    }
}
